IAxis.DigitalCamSwitch 方法

使用軸位置來控制觸發數位輸出的開關。當軸達到特定的位置,開關即開啟或關閉,開關可透過軸向前或向後移動的方向來控制。

命名空間IntervalZero.KINGSTAR.Base.Class

組合: IntervalZero.KINGSTAR.Base.Class (於 IntervalZero.KINGSTAR.Base.dll) 版本:4.4.0.0

語法

C#VB
void DigitalCamSwitch(
       IList<McCamSwitch> switches,
       IList<McOutput> outputs,
       IList<McTrack> tracks,
       uint enableMask,
       McSource valueSource
)
Sub DigitalCamSwitch(
       switches As IList(Of McCamSwitch),
       outputs As IList(Of McOutput),
       tracks As IList(Of McTrack),
       enableMask As UInteger,
       valueSource As McSource
)

參數

switches

型別:IList<McCamSwitch>

控制開關動作。軌道編號需要按順序排列。

 

outputs

型別:IList<McOutput>

選擇對應軌道所控制的數位輸出。

 

tracks

型別:IList<McTrack>

在軌道的開關上增加補償時間和遲滯。TrackNumber 定義在 Switches 中。

 

enableMask

型別:uint

啟用不同軌道。此參數為 bool(32 位元),當 bool 值設為 1 時將啟用軌道陣列中相應的軌道。

 

valueSource

型別:McSource

定義軸值的來源,例如位置:

備註

McCamSwitch 類別中的元素

B/E參數型別說明
BTrackNumberINT軌道索引,索引以零為起始。
BFirstOnPosition [使用者單位]LREAL開關開啟的位置。
BLastOnPosition [使用者單位]LREAL開關關閉的位置。
EAxisDirectionINT

軸方向,預設值為零。若選擇一或二,開關僅在當軸朝指定方向移動時才會啟動。

雙向:0;正向:1;負向:2。

ECamSwitchModeINT

凸輪開關由軸的位置或時間控制,預設值為零。若選擇位置,需進一步設定 FirstOnPositionLastOnPosition;若選擇時間,需進一步設定 FirstOnPositionDuration

位置:0;時間:1。

EDurationTIME開關開啟的時長,此功能在 CamSwitchMode 選擇為時間時可用,單位:秒。

 

McTrack 類別中的元素

B/E參數型別說明
EOnCompensationTIME在每個軌道的切換點前或後開啟開關(上升邊緣)的補償時間。若值為正,則開啟將延遲;若值為負,則將提前開啟。
EOffCompensationTIME在每個軌道的切換點前或後關閉開關(下降邊緣)的補償時間。若值為正,則關閉將延遲;若值為負,則將提前關閉。
EHysteresis [單位]LREAL在軸離開該區域之前,從開關未打開或未關閉的切換點(正向和負向)的距離。此可避免在開關點附近頻繁切換。

 

此凸輪定義具有起點與終點,如此使用者可定義每一個凸輪的 FirstOnPositionLastOnPosition(或時間),此函式類似機械凸輪,但具有額外的優點,您可為輸出設置一個特定時間,並設定時間補償和遲滯。

CamSwitchMode:可為位置或時間。

Duration:時長,凸輪開啟的輸出時長,時間補償 (OnCompensationOffCompensation) 可為正或負值,負值表示輸出在開關位置到達前即變更。

Hysteresis:此參數可避免軸在切換點附近及實際位置在切換位置附近抖動時,輸出不斷切換的現象。HysteresisMcTrack 的一部分,表示每個軌道都可設定不同的遲滯。

 

McCamSwitch 之範例

參數型別開關 01開關 02開關 03開關 04...開關 N
TrackNumberINTEGER1112  
FirstOnPosition [單位]LREAL2000250040003000  
LastOnPosition [單位]LREAL300030006000--  
AxisDirectionINTEGER1=正向2=負向0=雙向0=雙向  
CamSwitchModeINTEGER0=位置0=位置0=位置1=時間  
DurationLREAL------1.35 秒  

 

McOutput 之範例

參數MC_OUTPUT[0]MC_OUTPUT[1]MC_OUTPUT[2]---MC_OUTPUT[31]
IsAxisFALSEFALSEFALSE---FALSE
Index000---0
BitOffset012---31

 

I/O 模組之範例

 

下圖使用了上例 McCamSwitch 的值,不使用 On/OffCompensationHysteresis,此為當軸持續朝正向移動時的輸出行為。

 

SetAxisCamSwitch – 正向

 

正向:輸出行為

TrackNumber 1(開關 01, 02, 03)匹配到 McOutput[1];TrackNumber 2(開關 04)匹配到 McOutput[2]。當開關 01開關 02開關 03 被觸發時,第一個 I/O 模組(索引 0)上的第二個輸出(輸出 1)即被開啟。當開關 04 被觸發時,第三個輸出(輸出 2)即被開啟。

 

On/Off 補償之範例

以下範例使用 OnCompensation -125ms 與 OffCompensation +250ms。

 

下圖為當軸持續朝負向移動,且不使用 On/OffCompensation 與 Hysteresis 時的輸出行為。

 

SetAxisCamSwitch – 負向

 

負向:輸出行為

 

EnableMask

EnableMask 是一個含有 32 位元的 uint32 參數,每個位元都是一個 bool 值,可控制輸出。輸出可透過將相應的位元設為 TRUE 或 FALSE 來啟用或停用,例如位元 0 控制 McOutput[0];位元 1 控制 McOutput[1],若位元 0 和位元 1 都設為 TRUE,其輸出即被啟用,意即當相對應的開關被觸發時,其輸出即被開啟。若位元 0 和位元 1 都設為 FALSE,其輸出即被停用,即使相對應的開關被觸發時,其輸出也不會被開啟。

位元位元 0位元 1位元 2位元 3----位元 31
TRUE/FALSETRUE/FALSETRUE/FALSETRUE/FALSE----TRUE/FALSE

 

McOutput 之範例

參數MC_OUTPUT[0]MC_OUTPUT[1]MC_OUTPUT[2]---MC_OUTPUT[31]
IsAxisFALSEFALSEFALSE---FALSE
Index000---0
BitOffset012---31

 

EnableMask 位元之範例 1

位元 0、1、2 為 TRUE,意即輸出 0、1、2 被啟用,當相對應的開關被觸發時,輸出即被開啟。

位元位元 0位元 1位元 2位元 3----位元 31
TRUETRUETRUEFALSEFALSEFALSEFALSEFALSEFALSE

 

正向:輸出行為

 

EnableMask 位元之範例 2

位元 0、2 為 TRUE,意即輸出 0、2 被啟用,當相對應的開關被觸發時,僅有這 2 個輸出會被開啟。

位元位元 0位元 1位元 2位元 3----位元 31
TRUEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSE

 

正向:輸出行為

 

EnableMask 位元之範例 3

所有位元均為 FALSE,意即所有輸出均停用,即使相對應的開關被觸發時,輸出也不會被開啟。

位元位元 0位元 1位元 2位元 3----位元 31

FALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSE

 

正向:輸出行為

參見

IAxis 介面

IntervalZero.KINGSTAR.Base.Class 命名空間